#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>

void child_run(const char* cmd, const char* arg)
{
    printf("\n子进程（PID：%d）执行 %s...\n", getpid(), cmd);
    execlp(cmd, cmd, arg, NULL); // 从PATH查找命令
    perror("替换失败");
    exit(1);
}

int main() 
{
    // 创建3个子进程
    if (fork() == 0) child_run("ls", "-l");       // 子进程1：列文件
    if (fork() == 0) child_run("pwd", NULL);      // 子进程2：显示当前路径
    if (fork() == 0) child_run("whoami", NULL);   // 子进程3：显示当前用户

    // 父进程等待所有子进程
    for (int i = 0; i < 3; i++) wait(NULL);
    printf("\n所有子进程执行完毕\n");
    return 0;
}
